這篇要來介紹 Log 儲存,基於 Time Series 的 Log 儲存系統,安裝在 K8s 上並且跟 Grafana 串起來。
今天會採用的是 Grafana Labs 開發的 Loki,這是基於 Time series 的 Log 儲存系統,會接上 Promtail 蒐集每個 Container 的 Log,傳送到 Loki 做儲存。

按照往常慣例先加入 Grafana 的 Repo:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update

加入好了以後,這次會使用 loki-stack 這個 Chart 2.8.3 版本,最基礎的蒐集 Log 也有在裡面了,loki-distributed 是微服務版本,需要去細分他們的 Write flow 跟 Read flow,有需求的可以讀文件。

那 loki-stack 就是 Monolithic mode 版本,不過小型這樣也夠了,有需要再去換成 loki-distributed 就好。

那就把 loki-stack value 抓下來吧!
helm show values grafana/loki-stack --version 2.8.3 > values.yaml
vim values.yaml
看一下裡面的內容,確認 .loki.enabled 跟 .promtail.enabled 都是 true 就好,其他都是 false,除非評估有需要用到 filebeat 或 logstash 服務,不然 Promtail 蒐集 Log 就很夠用了。
接下來就安裝進去吧:
kubectl create namespace loki
helm install -f values.yaml loki grafana/loki-stack -n loki

安裝完畢以後,就可以跟 Grafana 串接起來。
那就還看看 Loki 服務名稱,kubectl get service 一下

根據拿到的 Service 為 loki,再加上因為是不同 Namespace 需要加上 loki,可以知道等等要連線的地方就是 http://loki.loki:3100
那就進入到 Configuration > Data sources > Add data source 選擇 Loki
URL 就打上 http://loki.loki:3100

按下最下面的 Save & Test 只要顯示 Data source connected and labels found. 就代表連線成功了。

進到 Explore,上面就可以切換 Datasource 為 Loki,按一下 Log browser,就可以根據以下的篩選條件來選擇你要的 Log。

這裡我會選擇找出 app=istiod 相關的 Log。

按下 Show logs 就會把相關條件的 Log 找出來。

還不錯吧!接下來就接上 Dashboard。
點到 Dashboards > New dashboard

就會來到這個畫面,點一下 Add a new panel

下方的 Query Datasource 改為 Loki,填寫上剛剛想查詢的 Log 範圍,右側記得改為 Logs,Title 設定為 Istio Daemon Logs。

按下 Apply 就會套用了。

別忘記按下 Save Dashboard。

其實 Loki 也可以跟 Syslog 做串接整合,不過這裡因為篇幅限制就沒有寫上來,如果有這樣需求教學,我會再跟 CNTUG 借 Infras 做實驗。
監控到這裡就暫告一個段落,下一篇就要來講程式碼版本管理 Server - GitLab,後面幾篇就來安裝、上傳程式碼、實作 CI/CD。
本系列內容也會同步貼到我的 Blog https://blog.yangjerry.tw 歡迎來我的 Blog 點一下 RSS 追蹤,那我們就下一篇文章見啦!